const { resolve, join } = require('path')
const fileUtils = require('../utils/file_utils')

// 延迟函数
function delay(time) {
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      resolve()
    }, time)
  })
}

module.exports = async (ctx, next) => {
  /**
   * 要做的事情：
   * 浏览器访问 http://localhost:8888/api/hot
   * 要返回 charts-server\data\hot.json 文件的数据
   *
   * 读文件需要绝对路径：     C:\Users\AOC\Desktop\my-app\charts-server\data\hot.json
   * 当前文件__dirname：      C:\Users\AOC\Desktop\my-app\charts-server\middleware
   * 所以要先返回上一层（ ../ ）然后再进入data（ data/hot.json）
   */

  // 先获取请求url：/api/hot
  const url = ctx.request.url
  // 去掉/api：/hot
  let filePath = url.replace('/api', '')
  // 拼出相对路径：../data/hot.json
  filePath = '../data' + filePath + '.json'
  // 拼出绝对路径
  filePath = join(__dirname, filePath)
  // console.log('filePath', filePath)

  try {
    const data = await fileUtils.getFileJsonData(filePath)
    // console.log('data', data)
    // ctx.response.body = data
    if (url === '/api/trend') {
      await delay(4000) // 4000ms 后返回数据
      ctx.response.body = data
    } else if (url === '/api/hot') {
      await delay(2000) // 800ms 后返回数据
      ctx.response.body = data
    } else {
      ctx.response.body = data
    }
  } catch (err) {
    const errMsg = {
      message: '读取文件内容失败，文件不存在',
      status: 404,
    }
    ctx.response.body = JSON.stringify(errMsg)
  }

  await next()
}
